Durante la fase de escalada de privilegios, se empleó la herramienta winPEAS, la cual reveló que el servicio spoolsv estaba activo y vulnerable a un CVE identificado como CVE-2021-1675. Al localizar un exploit correspondiente en un repositorio, se procedió a clonarlo y enviarlo a la máquina objetivo. La ejecución exitosa del exploit resultó en la creación de un nuevo usuario con privilegios. Posteriormente, mediante el uso de evil-winrm, se estableció conexión con este usuario privilegiado, facilitando así la obtención de la última flag.
Keywords: nmap, exploit, CVEs, samba, evil-winrm, crackmapexec, privilege escalation in Windows
Palabras Clave: nmap, exploit, CVEs, samba, evil-winrm, crackmapexec, Escalda de privilegios en Windows
Se emplea la herramienta Nmap para hacer el reconocimiento de puertos de la máquina Driver y de esta forma conocer cuales están abiertos.
> sudo nmap -p- --open -sS --min-rate 1000 -vvv -n -Pn 10.10.11.106 -oG allPorts
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-02-01 12:01 CET
Initiating SYN Stealth Scan at 12:01
Scanning 10.10.11.106 [65535 ports]
Discovered open port 80/tcp on 10.10.11.106
Discovered open port 135/tcp on 10.10.11.106
Discovered open port 445/tcp on 10.10.11.106
SYN Stealth Scan Timing: About 23.56% done; ETC: 12:03 (0:01:41 remaining)
SYN Stealth Scan Timing: About 49.12% done; ETC: 12:03 (0:01:03 remaining)
Discovered open port 5985/tcp on 10.10.11.106
SYN Stealth Scan Timing: About 74.72% done; ETC: 12:03 (0:00:31 remaining)
Completed SYN Stealth Scan at 12:03, 115.64s elapsed (65535 total ports)
Nmap scan report for 10.10.11.106
Host is up, received user-set (0.035s latency).
Scanned at 2024-02-01 12:01:04 CET for 116s
Not shown: 65531 filtered tcp ports (no-response)
Some closed ports may be reported as filtered due to --defeat-rst-ratelimit
PORT STATE SERVICE REASON
80/tcp open http syn-ack ttl 127
135/tcp open msrpc syn-ack ttl 127
445/tcp open microsoft-ds syn-ack ttl 127
5985/tcp open wsman syn-ack ttl 127
Read data files from: /usr/bin/../share/nmap
| Parámetros Nmap | |
|---|---|
| -p- | Escanea todos los 65535 puertos |
| –open | Solo muestra los puertos abiertos |
| -sS | Escaneo TCP SYN |
| –min-rate | Envío mínimo de paquetes |
| -vvv | Muestra la información del escaneo mientras está ejecutándose |
| -n | No realiza resolución DNS |
| -Pn | No realiza Host Discovery |
| -oG | Exporta el output en un archivo con formato grepeable |
Se confirma que tiene abiertos los siguientes puertos abiertos: 80,135,445,5985; por lo que mediante el archivo grepeable que creó anteriormente, se hara uso de una función personalidada en la .zshrc, que extrae y copia a la clipboard los puertos resultantes de la primera consulta nmap para luego pegarlos en una siguiente.
> extractPorts allPorts
[+] Extracting Information....
[+] IP Address: 10.10.11.106
[+] Open Ports: 80,135,445,5985
[+] Ports copied to clipboard
Con esta siguiente consulta se buscará enumerar que servicios están expuestos y sus respectivas versiones.
> sudo nmap -sCV -p80,135,445,5985 10.10.11.106 -oN targeted
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-02-01 12:04 CET
Nmap scan report for 10.10.11.106
Host is up (0.034s latency).
PORT STATE SERVICE VERSION
80/tcp open http Microsoft IIS httpd 10.0
| http-methods:
|_ Potentially risky methods: TRACE
| http-auth:
| HTTP/1.1 401 Unauthorized\x0D
|_ Basic realm=MFP Firmware Update Center. Please enter password for admin
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Microsoft-IIS/10.0
135/tcp open msrpc Microsoft Windows RPC
445/tcp open microsoft-ds Microsoft Windows 7 - 10 microsoft-ds (workgroup: WORKGROUP)
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
Service Info: Host: DRIVER; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-time:
| date: 2024-02-01T18:04:59
|_ start_date: 2024-02-01T17:58:35
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
|_clock-skew: mean: 6h59m59s, deviation: 0s, median: 6h59m59s
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 48.28 seconds
| Parámetros Nmap | |
|---|---|
| -sC | Conjunto de Scripts básicos de reconocimiento |
| -sV | Verificación de las versiones de los servicios expuestos |
| -oN | Guarda el output en un archivo |
Se enumera la página principal que está expuesta en el puerto TCP 80. Al ingresar de primera, solicita unas credenciales. Se ingresa credenciales básicas, entre esas admin:admin y se accede a la página que administra actualizaciones de firmware impresoras.
Enumerando la página, se observa que se puede cargar archivos en la sección de Firmware Updates, conociendo que el servicio smb está expuesto, se prueba con un archivo con extensión SCF (Shell Command Files). Por lo que se crea un servicio SMB en la máquina de atacante mediante el uso de impacket.
Se carga el archivo con extensión .scf y se da click en Submit. Se revisa la terminal en la cual se tiene activo el servicio smb, obteniendo unas credenciales que están hasheadas.
Se procede a pasar las credenciales hasheadas a un archivo que se llamará hash.
Mediante John The Ripper se descifra las credenciales del usuario tony.
Conociendo las credenciales, se prueba su validades para poder conectarse de manera remota por el servicio winrm con el uso de crackmapexec. Se confirma que las credenciales son válidas.
Se conecta a la máquina mediante el uso de evil-winrm, obteniendo una shell como el usuario tony. Se procede a capturar la user flag.
Con el comando net user se puede revisar los usuarios existentes en el sistema.
Mediante el comando whoami /priv se puede enumerar los permisos que posee el usuario actual. Y mediante el comando whoami /group se puede obtener los grupos asignados al usuario actual. Y para obtener toda la información de una sola vez se utiliza el comando whoami /all
Observando que no existen permisos ni grupos que se pueda aprovechar para escalar privilegios, se procede a utilizar la herramienta de winPEAS, que va a enumerar todo el sistema en busca de vulnerabilidades que permita la escalada. Se pasa el archivo a la máquina víctima y lo ejecutamos guardando el log en un archivo.
Al pasar el archivo resultante del análisis realizado por el winPEAS, se procede a leerlo para poder observar que vulnerabilidades se pueden aprovechar. En este caso, se observa que spoolsv está activo.
Realizando una búsqueda en Google, se logra ver que existe un CVE cuyo código es CVE-2021-1675. Teniendo el código del CVE-2021-1675, se encuentra un repositorio donde existe un exploit que aprovecha esta vulnerabilidad.
Se pasa el exploit a la máquina víctima.
Leyendo el README.md del repositorio, se observa los pasos para ejecutar el exploit. Se ejecuta, y mediante las credenciales se coloca, crea el nuevo usuario con permisos de nt authority system.
Se revisa que se haya creado correctamente el usuario "pwned", y con la ayuda de crackmapexec se confirma que se puede obtener conexión a ese usuario mediante winrm.
Con evil-winrm se conecta con las credenciales creadas en el exploit anterior (pwned:Pwned!$). Se confirma que sea un usuario perteneciente a grupos privilegiados. De esta manere se logra escalar privilegios y finalmente capturar la root flag.